/*
 * This program is free software; you can redistribute it and/or modify it under the 
 * terms of the GNU Lesser General Public License, version 2.1 as published by the Free Software 
 * Foundation.
 *
 * You should have received a copy of the GNU Lesser General Public License along with this 
 * program; if not, you can obtain a copy at http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html 
 * or from the Free Software Foundation, Inc., 
 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; 
 * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 * See the GNU Lesser General Public License for more details.
 *
 * Copyright 2008 Pentaho Corporation.  All rights reserved.
 *
 * @author Will Gorman (wgorman@pentaho.com)
 */
package org.pentaho.actioneditor.server;

import org.pentaho.actioneditor.client.ActionEditorService;
import org.pentaho.platform.api.engine.IPentahoSession;
import org.pentaho.platform.api.repository.ISolutionRepository;
import org.pentaho.platform.engine.core.system.PentahoSystem;
import org.pentaho.platform.web.http.PentahoHttpSessionHelper;

import com.google.gwt.user.server.rpc.RemoteServiceServlet;

public class ActionEditorServer extends RemoteServiceServlet implements ActionEditorService {

  private static final long serialVersionUID = 7946549950151852006L;

  public String getActionSequenceXml(String actionSequence) {
    try {
      IPentahoSession userSession = PentahoHttpSessionHelper.getPentahoSession(this.getThreadLocalRequest());
      ISolutionRepository repository = PentahoSystem.getSolutionRepository(userSession);
      return repository.getResourceAsString(actionSequence);
    } catch (Throwable t) {
      return "Error: " + t.getMessage();
    }
  }

  public String saveActionSequenceXml(String actionSequence, String xml) {
    try {
      IPentahoSession userSession = PentahoHttpSessionHelper.getPentahoSession(this.getThreadLocalRequest());
      ISolutionRepository repository = PentahoSystem.getSolutionRepository(userSession);
  
      String baseUrl = PentahoSystem.getApplicationContext().getSolutionPath("");
      
      int index = actionSequence.lastIndexOf("/");
      if (index == -1) {
        index = actionSequence.lastIndexOf("\\");
      }
      String path = actionSequence.substring(0, index);
      String xactionFilename = actionSequence.substring(index + 1);
      
      int xactionSaveStatus = repository.publish(baseUrl, path, xactionFilename,
          xml.getBytes(), true);
      return "Save Successful";
    } catch (Throwable t) {
      return "Error: " + t.getMessage();
    }
    
  }

}
